package com.demo.java.OD101_150.OD128;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des：【交换字符】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145724514
 */
public class OdMain {
    public static void main(String[] args) {
        // 创建 Scanner 对象，从控制台获取用户输入的字符串
        Scanner scanner = new Scanner(System.in);

        // 获取用户输入的字符串
        String inputString = scanner.nextLine();

        // 将输入的字符串转换为字符数组，方便处理
        char[] charArray = inputString.toCharArray();

        // 声明临时变量用于交换字符
        char temporaryChar = charArray[0];
        int temporaryIndex = 0;

        // 外层循环，从字符数组的第一个元素开始逐个处理
        for (int left = 0; left < charArray.length; left++) {
            // 将当前字符作为临时字符，准备与后续字符交换
            temporaryChar = charArray[left];
            temporaryIndex = left;

            // 内层循环，从当前位置 (left) 开始，查找比当前字符更小的字符
            for (int i = left; i < charArray.length; i++) {
                // 找到比 temporaryChar 更小的字符，更新 temporaryChar 和 temporaryIndex
                if (charArray[i] < temporaryChar) {
                    temporaryChar = charArray[i];
                    temporaryIndex = i;
                }
            }

            // 如果找到比当前字符更小的字符，就进行交换
            if (temporaryIndex != left) {
                // 交换位置，交换字符
                charArray[temporaryIndex] = charArray[left];
                charArray[left] = temporaryChar;

                // 交换后，跳出循环，只进行一次交换
                break;
            }
        }

        // 将字符数组转换回字符串
        String sortedString = String.valueOf(charArray);

        // 输出交换后的字符串
        System.out.println(sortedString);
    }
}
